package com.moyu.user.service;

import com.moyu.common.core.domain.R;
import com.moyu.user.domain.role.vo.RoleListVO;
import com.moyu.user.domain.user.dto.*;
import com.moyu.user.domain.user.vo.*;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

/**
 * 用户服务接口
 *
 * @Author 赵彦博
 * @Date 2025/3/25 18:29
 */
public interface IUserService {
    R register(HttpServletRequest request, UserSaveDTO userSaveDTO);

    R sendEmailCode(HttpServletRequest request, String emailAddress);

    R<String> login(String userAccount, String password);

    boolean logout(String token);

    R<LoginUserVO> info(String token);

    List<UserQueryVO> list(UserQueryDTO userQueryDTO);

    int updateStatus(UserDTO userDTO);

    List<RoleListVO> getRole(UserQueryDTO userQueryDTO);

    List<RoleListVO> getAvailableRoles(UserRoleQueryDTO queryDTO);

    int addUserRole(UserRoleDTO dto);

    int removeUserRole(UserRoleDTO dto);

    List<UserHotVO> getHotUser();

    DataTotalVO getTotal();

    int updateUserInfo(String token,UserUpdateDTO dto);

    int changePassword(UserUpdatePasswordDTO dto);

    List<UserPostListVO> getUserPosts(String userId);

    int updateAvatar(String fileName, String userId);

    R<LoginUserVO> getUserInfoOther(String token,String userId);

    List<UserPostListVO> getUserFavorites(String userId);
}
